// 数据
const state = {
    count : 1
}

// 业务逻辑  每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)这个回调函数就是我们实际进行状态更改的地方，并且它会接受 state 作为第一个参数, 如果 context.commit('increment', params2 )params2 可以在mutasion方法中作为第二个参数，参数可以是对象https://vuex.vuejs.org/zh/guide/mutations.html
const mutations = {
    increment (state) {
        console.log('mutations -> increment')
        state.count++
    },
    decrement (state) {
        state.count--
    }
}

// 提交事件  Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象，因此你可以调用 context.commit 提交一个 mutation，或者通过 context.state 和 context.getters 来获取 state 和 getters
const actions = {
    increment (context) {
        console.log('actions -> increment')
        context.commit('increment')

    },
    decrement ({commit}) {
        commit('decrement')
    }
}


// 导出
export default {
    namespaced: true,  // 开启命名空间 https://vuex.vuejs.org/zh/guide/modules.html
    state,
    actions,
    mutations
}